#include "opencv/highgui.h"
#include "opencv/cv.h"

int main( int argc, char** argv ) {

	// Carga imagen por argumento
	IplImage* img = cvLoadImage( argv[1], 1 );
		
	//Crea dos imagenes de igual tamaño y un canal
	IplImage* gray =  cvCreateImage(cvGetSize(img), img->depth, 1);
	IplImage* binary =  cvCreateImage(cvGetSize(img), img->depth, 1);
		
	//Transforma imagen de color a escala de grises
	cvCvtColor(img,gray,CV_BGR2GRAY); 

	//Binarizamos la imagen con un umbral.
	cvThreshold(gray, binary, 100, 255, CV_THRESH_BINARY_INV);

	//Se crean ventanas para cada imagen y se muestran las imagenes
	cvNamedWindow( "Color", 1);
	cvShowImage( "Color", img );		
	cvNamedWindow( "Gray", 1);
	cvShowImage( "Gray", gray );
	cvNamedWindow( "Binary", 1);
	cvShowImage( "Binary", binary );
	
	//Se espara hasta presionar una tecla
	cvWaitKey(0);
	
	//Libera las imagenes y cerrar las ventanas
	cvReleaseImage( &img );
	cvReleaseImage( &gray );
	cvReleaseImage( &binary );
	cvDestroyWindow( "Color" );
	cvDestroyWindow( "Gray" );
	cvDestroyWindow( "Binary" );
	
	return 0;
}
